package com.freeland.client2009.webservices.impl;

import java.util.Date;

import javax.jws.WebService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

import com.freeland.client2009.common.Constant;
import com.freeland.client2009.common.StringUtil;
import com.freeland.client2009.common.UserType;
import com.freeland.client2009.dao.ibatis.model.UserInfo;
import com.freeland.client2009.service.CommonService;
import com.freeland.client2009.service.UserInfoService;
import com.freeland.client2009.webservices.UserService;

@WebService(endpointInterface="com.freeland.client2009.webservices.UserService")
@Component("userServiceImpl")
public class UserServiceImpl implements UserService {

	@Autowired
	private UserInfoService userInfoService;
	@Autowired
	private CommonService commonService;
	
	public int UserEdit(String cooperationId, String userId, String oldPassword, String newPassword, String userState,
			String userName, String userIp, String userAddr, String qqnum, String phone, String contact,String sAreaId,
			String mac,String until,String pcCount,String userSecondType) {
		//增加用户
		//检查合作商ID
		int iRet = -9999 ;
		if (commonService.hasCooperation(cooperationId)){
			//检查用户密码
			if (StringUtils.hasText(oldPassword)){
				//检查用户ID
				//把外部用户的ID处理成系统内用户帐号
				//userId = String.valueOf(Constant.ERoom_User_StartId + Long.parseLong(userId));
				UserInfo paraObj = new UserInfo();
				paraObj.setUseracct(userId);	
				//根据合作商id来判断用户的类型
				//如果不是信产用户，一律标识为数码E房用户
				if(Constant.COOPERATION_XC.equals(cooperationId)){
					paraObj.setUsertype(UserType.USER_XC.value());
				}else{
					paraObj.setUsertype(UserType.USER_EROOM.value());
				}
				
				UserInfo existUser =userInfoService.getUserInfo(paraObj);
				if ( null != existUser) {
					if (oldPassword.equals(existUser.getPassword())) {
						
						UserInfo updateUserInfo = new UserInfo();
						updateUserInfo.setUserid(existUser.getUserid());
						//updateUserInfo.setUseracct(userId);
						if (StringUtils.hasText(newPassword)) updateUserInfo.setPassword(newPassword);
						if (StringUtils.hasText(userState)) updateUserInfo.setState(userState);
						if (StringUtils.hasText(userName)) updateUserInfo.setUsername(userName);
						if (StringUtils.hasText(userIp)) updateUserInfo.setUserip(userIp);
						if (StringUtils.hasText(userAddr)) updateUserInfo.setAddress(userAddr);
						if (StringUtils.hasText(qqnum)) updateUserInfo.setQqnum(qqnum);
						if (StringUtils.hasText(phone)) updateUserInfo.setPhone(phone);
						if (StringUtils.hasText(contact)) updateUserInfo.setContact(contact);
						if (StringUtils.hasText(sAreaId)) updateUserInfo.setEareaid(StringUtil.convert2Int(sAreaId));//地区
						if (StringUtils.hasText(mac)) updateUserInfo.setMac(mac);//2010-09-08 新增字段
						if (StringUtils.hasText(userSecondType)) updateUserInfo.setUserSecondType(userSecondType);//2010-12-28 新增字段
						
						if (StringUtils.hasText(until) && until.length()==19) 
							   updateUserInfo.setUntil(until);
						if (StringUtils.hasText(pcCount)){
							updateUserInfo.setPcCount(StringUtil.convert2Int(pcCount));
						}
						
						if (userInfoService.updateUser(updateUserInfo) == 1){
							iRet = 0; //修改成功
						} else {
							iRet = -4; //其它错误
						}
					} else {
						iRet = -3; //用户旧密码不正确
					}
				} else {
					iRet = -2; //用户ID不存在
				}
			} else {
				iRet = -3; //用户旧密码不正确
			}
		} else {
			iRet = -1; //合作商ID不存在
		}
		return iRet;
	}
	public int UserRegister(String cooperationId, String userId, String password, int areaId, String userName,
			String userIp, String userAddr, String qqnum, String phone, String contact,String mac,String until,String pcCount,String userSecondType) {
		//检查合作商ID
		int iRet = -9999 ;
		if (commonService.hasCooperation(cooperationId)){
			if (StringUtils.hasText(password)){
				if (areaId != 0){
					//检查用户ID
					//把外部用户的ID处理成系统内用户帐号
					//userId = String.valueOf(Constant.ERoom_User_StartId + Long.parseLong(userId));
					
					UserInfo paraObj = new UserInfo();
					paraObj.setUseracct(userId);	
					//根据合作商id来判断用户的类型
					//如果不是信产用户，一律标识为数码E房用户
					if(Constant.COOPERATION_XC.equals(cooperationId)){
						paraObj.setUsertype(UserType.USER_XC.value());
					}else{
						paraObj.setUsertype(UserType.USER_EROOM.value());
					}
					
					
					UserInfo existUser =userInfoService.getUserInfo(paraObj);
					if ( null == existUser) {
						UserInfo saveUserInfo = new UserInfo();
						saveUserInfo.setUserid(654321);
						saveUserInfo.setUseracct(userId);
						saveUserInfo.setPassword(password);
						saveUserInfo.setEareaid(areaId);
						saveUserInfo.setUsername(userName);
						saveUserInfo.setUserip(userIp);
						saveUserInfo.setAddress(userAddr);
						saveUserInfo.setQqnum(qqnum);
						saveUserInfo.setPhone(phone);
						saveUserInfo.setContact(contact);
						saveUserInfo.setRegdate(new Date());
						saveUserInfo.setState("1");
						saveUserInfo.setMac(mac);  //2010-09-08 新增字段
						saveUserInfo.setUserSecondType(userSecondType); //2010-12-29 软件版本   0 普通版，1 个人版
						if(until!=null && until.length()==19)
						     saveUserInfo.setUntil(until);
						
						saveUserInfo.setPcCount(StringUtil.convert2Int(pcCount));
						
						
						//根据合作商id来判断用户的类型
						//如果不是信产用户，一律标识为数码E房用户
						if(Constant.COOPERATION_XC.equals(cooperationId)){
							saveUserInfo.setUsertype(UserType.USER_XC.value());
						}else{
					    	saveUserInfo.setUsertype(UserType.USER_EROOM.value());
						}
						
						if (userInfoService.saveUser(saveUserInfo) == 1){
						     UserInfo oldBean=	userInfoService.getUserInfo(saveUserInfo);
						     iRet =oldBean.getDeskTopWebId();//新增成功,返回酒店桌面webID
							//iRet = 0; //新增成功
						} else {
							iRet = -5; //其它错误
						}
					} else {
						iRet = -2; //用户ID已存在
					}
				} else {
					iRet = -4; //地区ID不能为空
				}
			} else {
				iRet = -3; //用户密码不能为空
			}
		} else {
			iRet = -1; //合作商ID不存在
		}
		return iRet;
	}

}
